// select.js
// 导入请求工具
const { get, post, put, del } = require('../../utils/request');
const app = getApp();

Page({
  data: {
    addresses: [], // 地址列表
    loading: false // 加载状态
  },

  onLoad: function() {
    // 页面加载时，加载地址列表
    this.loadAddresses();
  },

  onShow: function() {
    // 页面显示时，重新加载地址列表
    // 用于添加或编辑地址后更新列表
    this.loadAddresses();
  },

  /**
   * 加载地址列表
   */
  loadAddresses: function() {
    this.setData({
      loading: true
    });

    get('/api/addresses/')
      .then(res => {
        const addresses = res || [];
        this.setData({
          addresses: addresses,
          loading: false
        });
      })
      .catch(err => {
        console.error('加载地址列表失败', err);
        this.setData({
          loading: false
        });
        wx.showToast({
          title: '加载地址失败',
          icon: 'none'
        });
      });
  },

  /**
   * 选择地址
   */
  selectAddress: function(e) {
    const id = e.currentTarget.dataset.id;
    const selectedAddress = this.data.addresses.find(address => address.id === id);
    
    if (selectedAddress) {
      // 将选中的地址回传给上一个页面
      const pages = getCurrentPages();
      const prevPage = pages[pages.length - 2];
      
      if (prevPage) {
        prevPage.setData({
          selectedAddress: selectedAddress
        });
        // 重新计算费用
        prevPage.calculateTotalPrice();
      }
      
      // 返回上一个页面
      wx.navigateBack();
    }
  },

  /**
   * 编辑地址
   */
  editAddress: function(e) {
    const id = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/address/add?id=${id}`
    });
  },

  /**
   * 删除地址
   */
  deleteAddress: function(e) {
    const id = e.currentTarget.dataset.id;
    
    // 确认删除
    wx.showModal({
      title: '确认删除',
      content: '确定要删除该收货地址吗？',
      success: (res) => {
        if (res.confirm) {
          this.setData({
            loading: true
          });
          
          // 调用API删除地址
          del('/api/addresses/', { id: id })
            .then(() => {
              this.setData({
                loading: false
              });
              
              // 更新本地地址列表
              const addresses = this.data.addresses.filter(address => address.id !== id);
              this.setData({
                addresses: addresses
              });
              
              wx.showToast({
                title: '删除成功',
                icon: 'success'
              });
            })
            .catch(err => {
              console.error('删除地址失败', err);
              this.setData({
                loading: false
              });
              wx.showToast({
                title: '删除失败',
                icon: 'none'
              });
            });
        }
      }
    });
  },

  /**
   * 设置默认地址
   */
  setDefault: function(e) {
    const id = e.currentTarget.dataset.id;
    
    this.setData({
      loading: true
    });
    
    // 调用API设置默认地址
    post('/api/addresses/set_default/', { id: id })
      .then(() => {
        this.setData({
          loading: false
        });
        
        // 更新本地地址列表
        const addresses = this.data.addresses.map(address => ({
          ...address,
          is_default: address.id === id
        }));
        this.setData({
          addresses: addresses
        });
        
        wx.showToast({
          title: '设置成功',
          icon: 'success'
        });
      })
      .catch(err => {
        console.error('设置默认地址失败', err);
        this.setData({
          loading: false
        });
        wx.showToast({
          title: '设置失败',
          icon: 'none'
        });
      });
  },

  /**
   * 添加新地址
   */
  addNewAddress: function() {
    wx.navigateTo({
      url: '/pages/address/add'
    });
  },

  /**
   * 阻止事件冒泡
   */
  stopPropagation: function(e) {
    // 阻止事件冒泡到父元素
  }
});